Skip Headers

Oracle® Database PL/SQL Packages and Types Reference 10g Release 2 (10.2) Part Number B14258-01 |
Home | Book List | Contents | Index | Master Index | Feedback

Previous | Next

# 183 ANYTYPE TYPE

An `ANYTYPE` `TYPE` can contain a type description of any persistent SQL type, named or unnamed, including object types and collection types. It can also be used to construct new transient type descriptions.

New persistent types can only be created using the `CREATE TYPE` statement. Only new transient types can be constructed using the `ANYTYPE` interfaces.

This chapter discusses the following:

- Summary of ANYTYPE Subprograms

## Summary of ANYTYPE Subprograms

Table 183-1 ANYTYPE Type Subprograms

Subprogram | Description
--- | ---
BEGINCREATE Static Procedure | Creates a new instance of `ANYTYPE` which can be used to create a transient type description.
SETINFO Member Procedure | Sets any additional information required for constructing a `COLLECTION` or builtin type.
ADDATTR Member Procedure | Adds an attribute to an `ANYTYPE` (of typecode `DBMS_TYPES`.`TYPECODE_OBJECT`).
ENDCREATE Member Procedure | Ends creation of a transient `ANYTYPE`. Other creation functions cannot be called after this call.
GETPERSISTENT Static Function | Returns an `ANYTYPE` corresponding to a persistent type created earlier using the `CREATE` `TYPE` SQL statement.
GETINFO Member Function | Gets the type information for the `ANYTYPE`.
GETATTRELEMINFO Member Function | Gets the type information for an attribute of the type (if it is of `TYPECODE_OBJECT`). Gets the type information for a collection's element type if the self parameter is of a collection type.

### BEGINCREATE Static Procedure

This procxedure creates a new instance of `ANYTYPE` which can be used to create a transient type description.

Syntax

    STATIC PROCEDURE BEGINCREATE(
       typecode       IN          PLS_INTEGER,
       atype          OUT NOCOPY  ANYTYPE);

Parameters

Table 183-2 BEGINCREATE Procedure Parameters

Parameter | Description
--- | ---
`typecode` | Use a constant from `DBMS_TYPES` package. Typecodes for user-defined type: `DBMS_TYPES.TYPECODE_OBJECT` `DBMS_TYPES.TYPECODE_VARRAY` or `DBMS_TYPES.TYPECODE_TABLE` Typecodes for builtin types: `DBMS_TYPES.TYPECODE_NUMBER,` and similar types.
`atype` | `ANYTYPE` for a transient type

### SETINFO Member Procedure

This procedure sets any additional information required for constructing a `COLLECTION` or builtin type.

Syntax

    MEMBER PROCEDURE SETINFO(
       self          IN OUT NOCOPY ANYTYPE,
       prec          IN PLS_INTEGER,
       scale         IN PLS_INTEGER,
       len           IN PLS_INTEGER,
       csid          IN PLS_INTEGER,
       csfrm         IN PLS_INTEGER,
       atype         IN ANYTYPE DEFAULT NULL,
       elem_tc       IN PLS_INTEGER DEFAULT NULL,
       elem_count    IN PLS_INTEGER DEFAULT 0);

Parameters

Table 183-3 SETINFO Procedure Parameters

Parameter | Description
--- | ---
`self` | The transient `ANYTYPE` that is being constructed.
`prec` | Optional.Required if typecode represents a `NUMBER`. Give precision and scale. Ignored otherwise.
`scale` | Optional.Required if typecode represents a `NUMBER`. Give precision and scale. Ignored otherwise.
`len` | Optional. Required if typecode represents a `RAW`, `CHAR`, `VARCHAR`, or `VARCHAR2` type. Gives length.
`csid` | Required if typecode represents types requiring character information such as `CHAR`, `VARCHAR`, `VARCHAR2`, or `CFILE`.
`csfrm` | Required if typecode represents types requiring character information such as `CHAR`, `VARCHAR`, `VARCHAR2`, or `CFILE`.
`atype` | Optional. Required if collection element typecode is a user-defined type such as `TYPECODE_OBJECT`, and similar others.. It is also required for a built-in type that needs user-defined type information such as `TYPECODE_REF`. This parameter is not needed otherwise.

The Following Parameters Are Required For Collection Types

Table 183-4 SETINFO Procedure Parameters - Collection Types

Parameter | Description
--- | ---
`elem_tc` | Must be of the collection element's typecode (from `DBMS_TYPES` package).
`elem_count` | Pass 0 for `elem_count` if the self represents a nested table (`TYPECODE_TABLE`). Otherwise pass the collection count if self represents a `VARRAY`.

Exceptions

- `DBMS_TYPES.INVALID_PARAMETER`: Invalid Parameters (typecode, typeinfo)

- `DBMS_TYPES.INCORRECT_USAGE`: Incorrect usage (cannot call after calling `ENDCREATE`, and similar actions.)

Usage Notes

It is an error to call this function on an `ANYTYPE` that represents a persistent user defined type.

### ADDATTR Member Procedure

This procedure adds an attribute to an `ANYTYPE` (of typecode `DBMS_TYPES`.`TYPECODE_OBJECT`).

Syntax

    MEMBER PROCEDURE ADDATTR(
       self          IN OUT NOCOPY ANYTYPE,
       aname         IN VARCHAR2,
       typecode      IN PLS_INTEGER,
       prec          IN PLS_INTEGER,
       scale         IN PLS_INTEGER,
       len           IN PLS_INTEGER,
       csid          IN PLS_INTEGER,
       csfrm         IN PLS_INTEGER,
       attr_type     IN ANYTYPE DEFAULT NULL);

Parameters

Table 183-5 ADDATTR Procedure Parameters

Parameter | Description
--- | ---
`self` | The transient `ANYTYPE` that is being constructed. `Must be of type DBMS_TYPES.TYPECODE_OBJECT.`
`aname` | Optional. Attribute's name. Could be `NULL`.
`typecode` | Attribute's typecode. Can be built-in or user-defined typecode (from `DBMS_TYPES` package).
`prec` | Optional. Required if typecode represents a `NUMBER`. Give precision and scale. Ignored otherwise.
`scale` | Optional. Required if typecode represents a `NUMBER`. Give precision and scale. Ignored otherwise.
`len` | Optional. Required if typecode represents a `RAW`, `CHAR`, `VARCHAR`, or `VARCHAR2` type. Give length.
`csid` | Optional. Required if typecode represents a type requiring character information, such as `CHAR`, `VARCHAR`, `VARCHAR2`, `CFILE`.
`csfrm` | Optional. Required if typecode represents a type requiring character information, such as `CHAR`, `VARCHAR`, `VARCHAR2`, `CFILE`.
`attr_type` | Optional. `ANYTYPE` corresponding to a user-defined type. This parameter is required if the attribute is a user defined type.

Exceptions

- `DBMS_TYPES.INVALID_PARAMETERS`: Invalid Parameters (typecode, typeinfo)

- `DBMS_TYPES.INCORRECT_USAGE`: Incorrect usage (cannot call after calling `EndCreate`, and similar actions.)

### ENDCREATE Member Procedure

This procedure ends creation of a transient `ANYTYPE`. Other creation functions cannot be called after this call.

Syntax

    MEMBER PROCEDURE ENDCREATE(
       self           IN OUT NOCOPY ANYTYPE);

Parameter

Table 183-6 ENDCREATE Procedure Parameter

Parameter | Description
--- | ---
`self` | The transient `ANYTYPE` that is being constructed.

### GETPERSISTENT Static Function

This procedure returns an `ANYTYPE` corresponding to a persistent type created earlier using the `CREATE` `TYPE` SQL statement.

Syntax

    STATIC FUNCTION GETPERSISTENT(
       schema_name      IN VARCHAR2,
       type_name        IN VARCHAR2,
       version          IN VARCHAR2 DEFAULT NULL)
       RETURN           ANYTYPE;

Parameters

Table 183-7 GETPERSISTENT Function Parameters

Parameter | Description
--- | ---
`schema_name` | Schema name of the type.
`type_name` | Type name.
`version` | Type version.

Return Values

An `ANYTYPE` corresponding to a persistent type created earlier using the `CREATE` `TYPE` SQL statement.

### GETINFO Member Function

This function gets the type information for the `ANYTYPE`.

Syntax

    MEMBER FUNCTION GETINFO (
       self        IN ANYTYPE,
       prec        OUT PLS_INTEGER,
       scale       OUT PLS_INTEGER,
       len         OUT PLS_INTEGER,
       csid        OUT PLS_INTEGER,
       csfrm       OUT PLS_INTEGER,
       schema_name OUT VARCHAR2,
       type_name   OUT VARCHAR2,
       version     OUT varchar2,
       count       OUT PLS_INTEGER)
       RETURN      PLS_INTEGER;

Parameters

Table 183-8 GETINFO Function Parameters

Parameter | Description
--- | ---
`self` | The `ANYTYPE`.
`prec` | If typecode represents a number. Gives precision and scale. Ignored otherwise.
`scale` | If typecode represents a number. Gives precision and scale. Ignored otherwise.
`len` | If typecode represents a `RAW`, `CHAR`, `VARCHAR`, or `VARCHAR2` type. Gives length.
`csid` | If typecode represents a type requiring character information such as: `CHAR`, `VARCHAR`, `VARCHAR2`, `CFILE`.
`csid` | If typecode represents a type requiring character information such as: `CHAR`, `VARCHAR`, `VARCHAR2`, `CFILE`.
`schema_name` | Type's schema (if persistent).
`type_name` | Type's typename.
`version` | Type's version.
`count` | If self is a `VARRAY`, this gives the `VARRAY` count. If self is of `TYPECODE_OBJECT`, this gives the number of attributes.

Return Values

The typecode of self.

Exceptions

- `DBMS_TYPES.INVALID_PARAMETERS`: Invalid Parameters (position is beyond bounds or the `ANYTYPE` is not properly Constructed).

### GETATTRELEMINFO Member Function

This function gets the type information for an attribute of the type (if it is of `TYPECODE_OBJECT`). Gets the type information for a collection's element type if the self parameter is of a collection type.

Syntax

    MEMBER FUNCTION GETATTRELEMINFO (
       self           IN ANYTYPE,
       pos            IN PLS_INTEGER,
       prec           OUT PLS_INTEGER,
       scale          OUT PLS_INTEGER,
       len            OUT PLS_INTEGER,
       csid           OUT PLS_INTEGER,
       csfrm          OUT PLS_INTEGER,
       attr_elt_type  OUT ANYTYPE
       aname          OUT VARRCHAR2)
       RETURN         PLS_INTEGER;

Parameters

Table 183-9 GETATTRELEMINFO Function Parameters

Parameter | Description
--- | ---
`self` | The `ANYTYPE`.
`pos` | If self is of `TYPECODE_OBJECT`, this gives the attribute position (starting at 1). It is ignored otherwise.
`prec` | If attribute/collection element typecode represents a `NUMBER`. Gives precision and scale. Ignored otherwise.
`scale` | If attribute/collection element typecode represents a `NUMBER`. Gives precision and scale. Ignored otherwise.
`len` | If typecode represents a `RAW`, `CHAR`, VARCHAR, or `VARCHAR2` type. Gives length.
`csid, csfrm` | If typecode represents a type requiring character information such as: `CHAR`, `VARCHAR`, `VARCHAR2`, `CFILE`. Gives character set `ID`, character set form.
`attr_elt_type` | If attribute/collection element typecode represents a user-defined type, this returns the `ANYTYPE` corresponding to it. User can subsequently describe the attr_elt_type.
`aname` | Attribute name (if it is an attribute of an object type, `NULL` otherwise).

Return Values

The typecode of the attribute or collection element.

Exceptions

`DBMS_TYPES.INVALID_PARAMETERS:` Invalid Parameters (position is beyond bounds or the ANYTYPE is not properly constructed).